Performing networking operations prior to booting up a computer is common. Preboot Execution Environment (PXE) is one technology that allows these operations to be performed remotely. For example, PXE allows an operating system (e.g., a root file system) loader or kernel to be downloaded from a Trivial File Transfer Protocol (TFTP) server, thereby making diskless workstations possible.
Network support on Basic Input/Output System (BIOS) may be implemented in synchronous mode, which means that the system can do nothing else when the application is trying to receive packets. During this process, the application only processes packets of interest and discards others. While synchronous mode simplifies the design of pre-booting firmware, it also has disadvantages. For example, the network stack is not responsive to any messages when the application stops polling or when the application does anything else other than polling in synchronous mode. Thus, it is not possible for the remote host to receive a reply after pinging a computer that finishes downloading an OS kernel using TFTP in a pre-boot state, because the PXE client (e.g., a TFTP client operating according to a Dynamic Host Configuration Protocol) terminates at that time and is not responsive to Internet Control Message Protocol (ICMP) packets.
Also, in blade server systems deployed in a modular computing environment as well as others, network stacks operating in synchronous mode may not be ideal. Remote configuration, remote diagnosis or remote monitoring may be preferred under these circumstances.
Another technology, known as EFI/Tiano, provides an interrupt-free pre-boot environment in which all interrupts are disabled except the timer interrupt, which is the only asynchronous event source. In this scheme, drivers are not allowed to use hardware interrupts. Instead, user polling is performed to communicate with devices. Also, each driver can register a timer event and poll the device state in an event notification function.
Because network traffic is unpredictable and because under EFI/Tiano polling is the only way for a driver to trace the state of the device, network stack software is often used to poll the Network Interface Card (NIC) at a high frequency to avoid loss of packets. However, polling wastes CPU cycles and therefore should be minimized to increase overall performance of the system.